package com.cs.paoyer.administration.web.action;

import com.cs.beneficios.business.entity.ReporteTotalProgramasDAO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.paoyer.administration.business.AdministrationMngr;
import com.cs.paoyer.administration.business.model.UserGroupVO;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.administration.web.form.UserForm;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.SystemException;
import com.cs.paoyer.common.exception.UserException;

import java.io.IOException;

import java.sql.SQLException;

import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;


public class SearchUserAction extends Action  {
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    
    
    UserForm userForm = ( UserForm ) form;
    ActionMessages messages = new ActionMessages();
	//ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
	ConnectionFactory cf = new ConnectionFactory();
  ReporteTotalProgramasDAO  objProg;
  Collection areas=null;
  HttpSession session = request.getSession();
  String strarea = request.getParameter("code");
     try{
      objProg = new ReporteTotalProgramasDAO(cf);
      areas = objProg.GetSecretarias();
      cf.closeConnection(objProg.getConn());
    }catch(SQLException e){
		System.err.println("/******** TDSUB - cwsub");
		e.printStackTrace();
		System.err.println("TDSUB - cwsub ********/");
    }
   if(areas.size() > 0){
     session.setAttribute("areas",areas);
      
      //if((Object)strarea != null && !strarea.equals("nulo"))
    //  {
    }
    try
		{
       
				AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        //AdministrationDelegate delegate = new AdministrationDelegate();
        AdministrationMngr delegate = new AdministrationMngr();	
        
        UserGroupVO userGroup = new UserGroupVO();
        UserVO user1 = (UserVO)session.getAttribute("userInfo");
        session.removeAttribute("msg");
        session.setAttribute("msg","");

        userGroup.setCode(new Long(0));
        userGroup.setWebUserModif("false");
        userGroup.setName(user1.getUserGroupName());
        Collection userGroups = delegate.findUserGroupByCriterea(userGroup);
        if(userGroups!=null && userGroups.size()>0)
        {
            session.setAttribute("userGroups",userGroups);
        }
        else{
          session.setAttribute("userGroups",null);
        }
        if(request.getParameter("search")!=null)
        {
            UserVO user= new UserVO();
            user.setName(userForm.getName());
            user.setDescription(userForm.getName());
            user.setUserGroupCode(userForm.getUserGroupCode());
            if(strarea.equals("")){
            user.setCodeArea(null);
            }else{
            user.setCodeArea(new Long(strarea));
            }
            user.setUse(userForm.getUse());
            Collection userList = delegate.findUserByCritereaAdmin(user);
            if(userList!=null && userList.size()>0)
            {
                request.setAttribute("userList",userList);
            }else
            {
            session.setAttribute("userList",null);
                request.setAttribute("msg","No se encontro ningun usuario con esos criterios de busqueda.");
            }
           
        }
        
			
    }
		catch (UserException ue) 
		{
				messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }

      
    }
    
		catch ( SystemException se) 
		{
				messages.add("msgError",  new ActionMessage("loginForm.message."
																			+ se.getExceptionVO().getId()));
				saveMessages(request, messages);
				return mapping.getInputForward();
    }//}}
    return mapping.findForward("success");
    /*if(request.getParameter("search")==null){
      return mapping.findForward("success");
    }else
    {
      //return mapping.findForward("ir");
      return mapping.findForward("success");
    }*/
    
  }
}